﻿#include "menu_bar.h"
#include "../../res/res.h"

#define MENU_BAR_WIDTH 120

struct {
    lv_obj_t* cont;
}ui;

static lv_obj_t* menu_bar_create(lv_obj_t* par) {
    ui.cont = lv_obj_create(par);
    lv_obj_remove_style_all(ui.cont);

    // 设置大小和位置
    lv_obj_set_size(ui.cont, MENU_BAR_WIDTH, LV_VER_RES);
    lv_obj_set_x(ui.cont, -MENU_BAR_WIDTH);
    lv_obj_set_y(ui.cont, 0);

    lv_obj_set_style_bg_color(ui.cont, lv_color_hex(0x524C9C), LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(ui.cont, LV_OPA_100, LV_STATE_DEFAULT);

    static lv_style_transition_dsc_t tran;
    static const lv_style_prop_t prop[] =
    {
        LV_STYLE_BG_COLOR,
        LV_STYLE_OPA,
        LV_STYLE_PROP_INV
    };
    lv_style_transition_dsc_init(
        &tran,
        prop,
        lv_anim_path_ease_out,
        200,
        0,
        NULL
    );
    lv_obj_set_style_transition(ui.cont, &tran, LV_STATE_USER_1);

    lv_obj_t* label = lv_label_create(ui.cont);
    lv_label_set_text(label, "123456");

    lv_obj_t* temp = lv_img_create(ui.cont);
    lv_img_set_src(temp, &temperature32x32);
}

void menu_bar_init()
{
    lv_obj_t* top = lv_layer_top();
    menu_bar_create(top);
}

/**
 * @brief 显示左侧菜单
 * @param en
 */
void menu_bar_appear(bool en) {
    int32_t start = -MENU_BAR_WIDTH;
    int32_t end = 0;
    if (!en) {
        start = 0;
        end = -MENU_BAR_WIDTH;
    }

    lv_anim_t a;
    lv_anim_init(&a);
    lv_anim_set_var(&a, ui.cont);
    lv_anim_set_values(&a, start, end);
    lv_anim_set_time(&a, 500);
    lv_anim_set_delay(&a, 1000);
    lv_anim_set_exec_cb(&a, lv_obj_set_x);
    lv_anim_set_path_cb(&a, lv_anim_path_ease_out);
    lv_anim_set_early_apply(&a, true);
    lv_anim_start(&a);
}
